"""
过滤序列元素

问题：
   你有一个数据序列，想利用一些规则从中提取出需要的值或者是缩短序列。
解决方案：
   最简单的过滤序列元素的方法就是使用列表推导。
"""


def use_list():
    user_id_list = [1, 3, -2, 6, 9, -1, 2]
    # 使用列表推导式，过滤掉小于0的uid
    print([uid for uid in user_id_list if uid > 0])
    # 输出结果：
    """
    [1, 3, 6, 9, 2]
    """


def use_generator():
    user_id_list = [1, 3, -2, 6, 9, -1, 2]
    # 使用生成器表达式，过滤掉小于0的uid
    user_id_generator = (uid for uid in user_id_list if uid > 0)
    # for uid in user_id_generator:
    #     print(uid)
    print(list(user_id_generator))
    # 输出结果：
    """
    [1, 3, 6, 9, 2]
    """


if __name__ == '__main__':
    use_list()
    use_generator()
